#pragma once

#include "HashTable.h"


template<class K>
struct setKofT
{
	K operator()(const K& key)
	{
		return key;
	}
};

template<class K>
class Unordered_set
{
public:
	typedef typename hash_bucket::HashTable<K, K, setKofT<K>>::const_iterator iterator;
	typedef typename hash_bucket::HashTable<K, K, setKofT<K>>::const_iterator const_iterator;

	pair<iterator, bool> insert(const K& key)
	{
		return _ht.insert(key);
	}
	
	bool Erase(const K& key)
	{
		return _ht.Erase(key);
	}

	iterator begin() const
	{
		return _ht.begin();
	}
 	iterator end() const
	{
		return _ht.end();
	}

private:
	hash_bucket::HashTable<K, K, setKofT<K>> _ht;
};